Skip to content

test: sweep seeds, because one seed credited a gain that is not there - #61

Merged
Endika merged 2 commits into
mainfrom
test/seed-sweep
Aug 14, 2026
Merged

test: sweep seeds, because one seed credited a gain that is not there#61
Endika merged 2 commits into
mainfrom
test/seed-sweep

Conversation

@Endika

@Endika Endika commented Aug 14, 2026

Copy link
Copy Markdown
Owner

experiment.py comparaba variantes con el mismo split y el mismo presupuesto, y hasta ahora
con la misma única semilla. Barriendo 7/13/29/41 sobre las mismas variantes, la dispersión
entre semillas resulta ser tan grande como las ganancias que el proyecto se estaba acreditando:

variante media top-1 sd min max
pose + 16 fotogramas, sin cara 0.722 0.011 0.706 0.731
+ expresión facial, cada fotograma 0.716 0.024 0.694 0.741
+ expresión facial, retenida ≤300 ms 0.714 0.008 0.704 0.724
sin los escalares de torso 0.713 0.011 0.701 0.726

El +1.2 del bloque de cara era el máximo de cuatro semillas. Su media queda por debajo
de no tener cara, y qué lado gana cambia con la semilla. El torso se comporta distinto: +0.9 de
media y el mismo signo en tres de cuatro, lo que reproduce el +1.0 que se le atribuía.
Ninguna de las dos alcanza significancia con n=4 —el error estándar de una diferencia aquí anda
por 0.008— pero pequeño-y-consistente y cero-y-errático no son el mismo hallazgo.

Lo que decide entre esas dos no es la significancia, es el coste. Los escalares de torso se
derivan de landmarks de pose que el pipeline necesita de todas formas, porque las coordenadas
de mano son relativas al torso: cuestan cinco restas. El bloque de cara cuesta una pasada
entera de FaceLandmarker por fotograma, y los fotogramas por segundo son lo que decide si la
app escribe algo.

Esto no es motivo para borrar el bloque de cara. SWL-LSE es un diccionario: signos aislados
en forma de cita, así que no hay negación, interrogativa ni topicalización que marquen los
rasgos no manuales, y las articulaciones bucales que distinguen signos manualmente idénticos no
aparecen nunca. Lo medido es que esos seis escalares no aportan en este corpus para esta
tarea
. La variante más rica, face points (21 located), también midió peor, lo que se lee como
que no hay datos para aprender la cara, no como un veredicto sobre la cara.

Dos banderas nuevas, y por qué son así:

  • face_hold_ms simula ejecutar el modelo de cara menos a menudo reteniendo la última lectura.
    Se pide en milisegundos, no en fotogramas: el corpus va a 20.00 fps y la app no se acerca,
    así que "uno de cada tres" son 150 ms aquí y ~600 ms en un móvil. Es la misma trampa que tapó
    el bug de los umbrales del segmentador.
  • use_torso es independiente de use_pose a propósito. Apagar use_pose se llevaría también
    la posición de la mano relativa al torso, que es la única ganancia grande (+5.7), así que
    medir el torso a través de esa bandera contestaría otra pregunta.

Los logs viven en tools/train/data, que está en .gitignore, así que los hallazgos van al
README en vez de quedarse en mi máquina. Y el docblock de vocabularySignature.ts afirmaba que
todos los elementos se habían ganado su sitio: corregido en el segundo commit.

@Endika
Endika merged commit 978c4b4 into main Aug 14, 2026
7 checks passed
@Endika
Endika deleted the test/seed-sweep branch August 14, 2026 16:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant